/*
为什么要写这个驱动：
网上已经有一些ads1299的驱动了，但是如openbci那种，不够简单清晰，一层层的封装，还有一些为了他们自己的板子适配的功能，阅读和维护都很麻烦。
github上也有简单的，但我需要同时驱动几块ads1299,做一个多通道的，也不好用。所以还是自己写一个,满足自己的需求，并且尽量简洁，注重运行效率。
参考了：
https://github.com/UO-Bionics-MindMetrics/ADS1299-Arduino-Driver/tree/main
https://github.com/Borchevkin/drv_ads1299/tree/master
https://github.com/starcat-io/hackeeg-driver-arduino/tree/main/hackeeg_driver
openbci
 
关于ads1299：

和之前我用过的普通的adc最大的不同大概是这个芯片有一个上电流程（说明书62页），如果哪里不对，要关注下这个地方是不是有问题。

我一开始为了验证spi通讯，尝试去读device_id，用示波器看spi时序波形，怎么都是对的，就是MISO信号出不来，
后来发现上电后，他会自动进入RDATAC的模式，如果要读deviceID，需要先发一个SDATAC的命令，不然读不出。
这个是看了
https://github.com/UO-Bionics-MindMetrics/ADS1299-Arduino-Driver/blob/main/src/ADS1299.cpp 58行 void ADS1299::RREG(byte _address) 这个函数
的代码发现的

如果不想用RESET，发送RESET命令（命令表，说明书40页）也是一样的效果（说明书35页）。

在我的板子上，我将RESET和PWDN两个引脚直接接到了3.3v。（以后可以考虑将PWDN连到一个GPIO脚上，不用的时候可以关掉降低功耗）

我这里多个ads1299公用一套spi线，各有自己的CS线。如果只有一片ads1299，可以不设置CS线（默认是-1），这样可以在spi配置那里配置为硬件CS。

目前我只写出了我用得到的基本功能，其他功能用到了再写。

我这里主控用的esp32，其他的芯片应该也可以，但我没有实验过。
*/

#ifndef __ADS1299_DRV_X_H__
#define __ADS1299_DRV_X_H__

#include "ads1299x.h"

#define CHIP_NUM 4

typedef void (* ads1299_drv_handler_t) (uint8_t * p_data, uint16_t len);

typedef struct 
{	
	ads1299_drv_handler_t callback_handler;		// callback function
}ads1299_drv_t;

void ads1299_dev_init(ads1299_drv_t m_drv);

void ads1299_drv_check_id(void);

void ads1299_dev_start(void);













#endif